--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/AddInterfaceDiscovery.test.js v4.5.0-rc.5 (eee4a4d7) Text, 10.50 KB
Tff7b72import Tb4b4b4{ Te6edf3mount Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3AddInterfacePage Tff7b72from Ta5d6ff"../../meshchatx/src/frontend/components/interfaces/AddInterfacePage.vue"Tb4b4b4;
Tff7b72const Te6edf3mockAxios Tff7b72= Tb4b4b4{
Te6edf3getTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3postTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3api Tff7b72= Te6edf3mockAxiosTb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/DialogUtils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3alertTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/ToastUtils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3successTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3errorTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"AddInterfacePage.vue discovery"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3mockAxiosTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3messageTff7b72: Ta5d6ff"ok" Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3mountPage Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=>
Te6edf3mountTb4b4b4(Te6edf3AddInterfacePageTb4b4b4, Tb4b4b4{
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3mocksTff7b72: Tb4b4b4{
Te6edf3$routeTff7b72: Tb4b4b4{ Te6edf3queryTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3$routerTff7b72: Tb4b4b4{ Te6edf3pushTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3$tTff7b72: Tb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4=> Te6edf3msgTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3stubsTff7b72: Tb4b4b4[Ta5d6ff"RouterLink"Tb4b4b4, Ta5d6ff"MaterialDesignIcon"Tb4b4b4, Ta5d6ff"Toggle"Tb4b4b4, Ta5d6ff"ExpandingSection"Tb4b4b4, Ta5d6ff"FormLabel"Tb4b4b4, Ta5d6ff"FormSubLabel"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"adds discovery fields when interface is discoverable"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"TestIface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Ta5d6ff"4242"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Ta5d6ff"Region A"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= T79c0ff720Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Ta5d6ff"/usr/local/bin/ip.sh"Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3discoverableTff7b72: Ta5d6ff"yes"Tb4b4b4,
Te6edf3discovery_nameTff7b72: Ta5d6ff"Region A"Tb4b4b4,
Te6edf3announce_intervalTff7b72: T79c0ff720Tb4b4b4,
Te6edf3reachable_onTff7b72: Ta5d6ff"/usr/local/bin/ip.sh"Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not require latitude or longitude (optional coordinates)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"NoCoords"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Ta5d6ff"4242"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Ta5d6ff"X"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= T79c0ff360Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Ta5d6ff"192.0.2.1"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitude Tff7b72= Tff7b72nullTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitude Tff7b72= Tff7b72nullTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3height Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3latitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3longitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3heightTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3discoverableTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"yes"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"sends coordinates when set (text input compatible)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"WithCoords"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Ta5d6ff"4242"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Ta5d6ff"Y"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= T79c0ff360Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Ta5d6ff"192.0.2.2"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitude Tff7b72= Ta5d6ff"51.5"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitude Tff7b72= Ta5d6ff"-0.12"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3height Tff7b72= Ta5d6ff"42"Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3latitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff51.5Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3longitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72-T79c0ff0.12Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3heightTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff42Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"toggles discovery_encrypt and publish_ifac in payload"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"Enc"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Ta5d6ff"4242"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Ta5d6ff"Z"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= T79c0ff120Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Ta5d6ff"10.0.0.1"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3discovery_encryptTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3publish_ifacTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"clears discovery fields when discoverable is off"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"Off"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Ta5d6ff"4242"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3discoverableTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3discovery_nameTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3latitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"fuzz: random safe discovery_name and announce_interval still save"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceName Tff7b72= Ta5d6ff"Fuzz"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"TCPClientInterface"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Ta5d6ff"example.com"Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Ta5d6ff"4242"Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff30Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3messageTff7b72: Ta5d6ff"ok" Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3name Tff7b72= Ta5d6ff`Ta5d6ffnode-Tffd700${Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toStringTb4b4b4(T79c0ff36Tb4b4b4)Tb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff2Tb4b4b4, T79c0ff10Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3interval Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff5Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff10000Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Te6edf3nameTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= Te6edf3intervalTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Ta5d6ff"192.0.2.1"Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3saveInterfaceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3discovery_nameTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3payloadTb4b4b4.Te6edf3announce_intervalTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3intervalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"loadInterfaceToEdit restores discoverable and coordinates from API"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3mockAxiosTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/reticulum/interfaces"Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3interfacesTff7b72: Tb4b4b4{
Te6edf3MyIfaceTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"TCPClientInterface"Tb4b4b4,
Te6edf3target_hostTff7b72: Ta5d6ff"h.example"Tb4b4b4,
Te6edf3target_portTff7b72: Ta5d6ff"5555"Tb4b4b4,
Te6edf3discoverableTff7b72: Ta5d6ff"yes"Tb4b4b4,
Te6edf3discovery_nameTff7b72: Ta5d6ff"Loaded"Tb4b4b4,
Te6edf3announce_intervalTff7b72: T79c0ff180Tb4b4b4,
Te6edf3reachable_onTff7b72: Ta5d6ff"192.0.2.3"Tb4b4b4,
Te6edf3latitudeTff7b72: T79c0ff12.34Tb4b4b4,
Te6edf3longitudeTff7b72: T79c0ff56.78Tb4b4b4,
Te6edf3heightTff7b72: T79c0ff100Tb4b4b4,
Te6edf3discovery_stamp_valueTff7b72: T79c0ff18Tb4b4b4,
Te6edf3discovery_encryptTff7b72: Tff7b72trueTb4b4b4,
Te6edf3publish_ifacTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3loadInterfaceToEditTb4b4b4(Ta5d6ff"MyIface"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverableTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_nameTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"Loaded"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_intervalTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff180Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff12.34Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitudeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff56.78Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3heightTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encryptTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifacTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"quickAddInterfaceFromConfig posts add endpoint and routes back"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3routerPush Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountTb4b4b4(Te6edf3AddInterfacePageTb4b4b4, Tb4b4b4{
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3mocksTff7b72: Tb4b4b4{
Te6edf3$routeTff7b72: Tb4b4b4{ Te6edf3queryTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3$routerTff7b72: Tb4b4b4{ Te6edf3pushTff7b72: Te6edf3routerPush Tb4b4b4}Tb4b4b4,
Te6edf3$tTff7b72: Tb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4=> Te6edf3msgTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3stubsTff7b72: Tb4b4b4[Ta5d6ff"RouterLink"Tb4b4b4, Ta5d6ff"MaterialDesignIcon"Tb4b4b4, Ta5d6ff"Toggle"Tb4b4b4, Ta5d6ff"ExpandingSection"Tb4b4b4, Ta5d6ff"FormLabel"Tb4b4b4, Ta5d6ff"FormSubLabel"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3quickAddInterfaceFromConfigTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"Quick Node"Tb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"TCPClientInterface"Tb4b4b4,
Te6edf3target_hostTff7b72: Ta5d6ff"node.example"Tb4b4b4,
Te6edf3target_portTff7b72: Ta5d6ff"4242"Tb4b4b4,
Te6edf3discoverableTff7b72: Ta5d6ff"yes"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mockAxiosTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/reticulum/interfaces/add"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"Quick Node"Tb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"TCPClientInterface"Tb4b4b4,
Te6edf3target_hostTff7b72: Ta5d6ff"node.example"Tb4b4b4,
Te6edf3target_portTff7b72: T79c0ff4242Tb4b4b4,
Te6edf3discoverableTff7b72: Ta5d6ff"yes"Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3routerPushTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"interfaces" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handleRawConfigInput auto-imports a single detected config"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountPageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3quickAddSpy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4, Ta5d6ff"quickAddInterfaceFromConfig"Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3rawConfigInput Tff7b72= Ta5d6ff`Ta5d6ff[[Auto Node]]
type = TCPClientInterface
target_host = auto.example
target_port = 4242Ta5d6ff`Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3handleRawConfigInputTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3quickAddSpyTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"Auto Node"Tb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"TCPClientInterface"Tb4b4b4,
Te6edf3target_hostTff7b72: Ta5d6ff"auto.example"Tb4b4b4,
Te6edf3target_portTff7b72: Ta5d6ff"4242"Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────